package org.hxyjs.dao;



import org.hxyjs.entity.MongoDBDocument;
import org.hxyjs.entity.MongoDbCondition;

import java.util.List;

//@Repository
public interface MongodbDao {


    /**
     * 新增文档
     *
     * @param mongoDBDocument
     * @return
     */
    public void insert(MongoDBDocument mongoDBDocument);

    /**
     * 新增文档
     *
     * @param mongoDBDocument
     * @return
     */
    public void insertWithKey(MongoDBDocument mongoDBDocument, String key);

    public void save(MongoDBDocument mongoDBDocument);


    public void save(MongoDBDocument mongoDBDocument, String documentName);
    /**
     * 删除文档
     * NOTE:remove方法不支持级联删除所以要单独删除子数据
     * @param
     */
    public void removeById(String id, String collectionName) ;


    /**
     * 更新文档
     * @param mongoDBDocument
     */
    public void update(MongoDBDocument mongoDBDocument);

    /**
     * 查询文档
     * @param name
     */
    public void find(String name);
    //根据uid分页查询
    public List<MongoDBDocument> page(int page, String uid);

    //根据key查找一个
    public  <T> MongoDBDocument findByKey(String collectionName, String no, Class<T> t);

    public  <T> void updateByKey(String collectionName, String key, Class<T> t, String fdName, String fdValue);

    public List<MongoDBDocument> getListByRegxp(List<MongoDbCondition<String, String>> mongoDbConditions, String collectionName);

    public String initId(String urnobegin, String fieldName, String collectionName) ;

}